/*
 * Created on Thu Jul 27 2017
 *
 * @Author: kuerbb
 * @Email: kuerbb@aliyun.com.cn
 * @Description: 验证规则
 */

const validator = {
  notEmpty: {
    validator(value: any) {
      return value;
    },
    message: "必填项，不允许为空。"
  },
  minLength: { // 判断最小长度
    validator(value: any, param: any) {
      return value.length >= param[0];
    },
    message: "最少输入 {0} 个字符。"
  },
  length: {
    validator(value: any, param: any) {
      // 去除首尾空格
      const len = value.trim().length;
      return len >= param[0] && len <= param[1];
    },
    message: "内容长度介于{0}和{1}之间."
  },
  phone: { // 验证电话号码
    validator(value: any) {
      return !value || /^((\(\d{2,3}\))|(\d{3}-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(-\d{1,4})?$/i.test(value);
    },
    message: "格式不正确,请使用下面格式:041184727321"
  },
  mobile: { // 验证手机号码
    validator(value: any) {
      return !value || /^(13|15|18|17|16)\d{9}$/i.test(value);
    },
    message: "手机号码格式不正确(正确格式如：13450774432)"
  },
  phoneOrMobile: { // 验证手机或电话
    validator(value: any) {
      return !value || /^(13|15|18|17|16)\d{9}$/i.test(value) || /^((\(\d{2,3}\))|(\d{3}-))?(\(0\d{2,3}\)|0\d{2,3})?[1-9]\d{6,7}(-\d{1,4})?$/i.test(value);
    },
    message: "请填入手机或电话号码,如13688888888或041184727321"
  },
  idcard: { // 验证身份证
    validator(value: any) {
      return !value || /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
    },
    message: "身份证号码格式不正确"
  },
  floatOrInt: { // 验证是否为小数或整数
    validator(value: any) {
      return /^(\d{1,15}(,\d\d\d)*(\.\d{1,15}(,\d\d\d)*)?|\d+(\.\d+))?$/i.test(value);
    },
    message: "请输入数字，并保证格式正确"
  },
  currency: { // 验证货币
    validator(value: any) {
      return !value || /^d{0,}(\.\d+)?$/i.test(value);
    },
    message: "货币格式不正确"
  },
  qq: { // 验证QQ,从10000开始
    validator(value: any) {
      return !value || /^[1-9]\d{4,9}$/i.test(value);
    },
    message: "QQ号码格式不正确(正确如：453384319)"
  },
  integer: { // 验证整数
    validator(value: any) {
      return !value || /^[+]?[1-9]+\d*$/i.test(value);
    },
    message: "请输入整数"
  },
  chinese: { // 验证中文
    validator(value: any) {
      return !value || /^[\u0391-\uFFE5]+$/i.test(value);
    },
    message: "请输入中文"
  },
  english: { // 验证英语
    validator(value: any) {
      return !value || /^[A-Za-z]+$/i.test(value);
    },
    message: "请输入英文"
  },
  unnormal: { // 验证是否包含空格和非法字符
    validator(value: any) {
      return !value || /.+/i.test(value);
    },
    message: "输入值不能为空和包含其他非法字符"
  },
  username: { // 验证用户名
    validator(value: any) {
      return !value || /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);
    },
    message: "用户名不合法（字母开头，允许6-16字节，允许字母数字下划线）"
  },
  faxno: { // 验证传真
    validator(value: any) {
      return !value || /^((\(\d{2,3}\))|(\d{3}-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(-\d{1,4})?$/i.test(value);
    },
    message: "传真号码不正确"
  },
  zip: { // 验证邮政编码
    validator(value: any) {
      return !value || /^[0-9]\d{5}$/i.test(value);
    },
    message: "邮政编码格式不正确"
  },
  ip: { // 验证IP地址
    validator(value: any) {
      return !value || /d+.d+.d+.d+/i.test(value);
    },
    message: "IP地址格式不正确"
  },
  name: { // 验证姓名，可以是中文或英文
    validator(value: any) {
      return !value || /^[\u0391-\uFFE5]+$/i.test(value) || /^\w+[\w\s]+\w+$/i.test(value);
    },
    message: "请输入姓名"
  },
  carNo: {
    validator(value: any) {
      return !value || /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/.test(value);
    },
    message: "车牌号码无效（例：辽B12350）"
  },
  carenergin: {
    validator(value: any) {
      return !value || /^[a-zA-Z0-9]{16}$/.test(value);
    },
    message: "发动机型号无效(例：FG6H012345654584)"
  },
  email: {
    validator(value: any) {
      return !value || /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
    },
    message: "请输入有效的电子邮件账号(例：abc@126.com)"
  },
  msn: {
    validator(value: any) {
      return !value || /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
    },
    message: "请输入有效的msn账号(例：abc@hotnail(msn/live).com)"
  },
  department: {
    validator(value: any) {
      return !value || /^[0-9]*$/.test(value);
    },
    message: "请输入部门排序号(例：1)"
  },
  isFloat: {
    validator(value: any) {
      return !value || /^(0(\.\d{1,2})?)$/.test(value);
    },
    message: "请输入0-0.99之间的数字"
  },
  isInterEng: {
    validator(value: any) {
      return !value || /^[0-9a-zA-Z]+$/.test(value);
    },
    message: "请输入英文或者数字"
  }
};

export default validator;
